from ..obj.context import _ContextManager


def get_context_manager():
    """
        获取上下文管理器
    """
    return _ContextManager()


def context_set(key, value):
    """
        设置上下文
    """
    get_context_manager().set_value(key, value)


def context_get(key):
    """
        获取上下文
    """
    return get_context_manager().get_value(key)


def context_append(key, value):
    """
        追加上下文
    """
    from django.utils import timezone
    if key == 'process_info':
        value['service_time'] = timezone.localtime().strftime('%Y-%m-%d %H:%M:%S')
    get_context_manager().append_value(key, value)


def format_context_data():
    """
        格式化上下文数据
    """
    return get_context_manager().format_data()

def clear_context():
    """
        清空上下文
        Warning: 谨慎使用，可能会导致数据丢失， context会在请求返回之后，自动释放空间。 非必要，无须手动释放
    """
    get_context_manager().clear()

def destroy_context():
    """
        销毁上下文
    """
    get_context_manager().destroy()